def longest_xy_substring(s):
    prefix_sum = 0
    sum_indices = {0: -1}  # 初始前缀和为0的位置为-1
    max_len = 0
    
    for i, char in enumerate(s):
        if char == 'x':
            prefix_sum += 1
        else:
            prefix_sum -= 1
        
        if prefix_sum in sum_indices:
            # 如果前缀和已经存在，计算当前索引与第一次出现该前缀和的索引的差
            current_len = i - sum_indices[prefix_sum]
            if current_len > max_len:
                max_len = current_len
        else:
            # 记录第一次出现该前缀和的位置
            sum_indices[prefix_sum] = i
    
    return max_len

# 测试用例
print(longest_xy_substring("xyxxyxyy"))  # 输出应为6（"xyxxyxyy"中"yxxyxy"满足条件）
print(longest_xy_substring("xyxy"))      # 输出应为4（整个字符串）
print(longest_xy_substring("xxx"))       # 输出应为0（没有满足条件的子串）